﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Biblioteca.dao.iClassesDAO.equipamento;
using Biblioteca.classesBasicas.equipamento;
using Biblioteca.util;
using System.Data.SqlClient;

namespace Biblioteca.dao.classesDAO.equipamento
{
    class CilindroDAO : Conexao, ICilindroDAO
    {
        public void cadastrar(Cilindro objeto)
        {
            try
            {
                this.abrirConexao();
                SqlCommand comandoSql = conexao.CreateCommand();
                comandoSql.CommandText = "INSERT INTO CILINDRO(NOME, TIPO, MARCA, VALOR) VALUES ('" + objeto.Nome + "','" + objeto.Tipo + "','" + objeto.Marca + "','" + objeto.Valor + "')";
                comandoSql.ExecuteNonQuery();
                comandoSql.Dispose();
                this.fecharConexao();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message + " Erro ao cadastar Cilindro.");
            }
            finally
            {
                this.fecharConexao();
            }
        }

        public void alterar(Cilindro objeto)
        {
            try
            {
                this.abrirConexao();
                SqlCommand comando = new SqlCommand("UPDATE CILINDRO SET NOME='" + objeto.Nome + "', TIPO='" + objeto.Tipo + "', MARCA='" + objeto.Marca + "', VALOR='" + objeto.Valor + "'" + "WHERE CILINDRO.ID_CILINDRO = " + Convert.ToInt32(objeto.Id), this.conexao);
                comando.ExecuteNonQuery();
                comando.Dispose();
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message + " Erro ao alterar Cilindro.");
            }

            finally
            {
                this.fecharConexao();
            }
        }

        public void remover(Cilindro objeto)
        {
            try
            {
                this.abrirConexao();
                SqlCommand comando = new SqlCommand("EXEC PROCEDURE_DELETAR_CILINDRO " + Convert.ToInt32(objeto.Id), this.conexao);
                comando.ExecuteNonQuery();
                comando.Dispose();
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message + " Erro ao remover Cilindro.");
            }

            finally
            {
                this.fecharConexao();
            }
        }

        public Cilindro consultarPorId(string id)
        {
            Cilindro cilindroMetodo = null;

            try
            {
                this.abrirConexao();
                SqlCommand comando = new SqlCommand("SELECT ID_CILINDRO, NOME, TIPO, MARCA, VALOR FROM CILINDRO WHERE CILINDRO.ID_CILINDRO=" + Convert.ToInt32(id), this.conexao);
                SqlDataReader DbReader = comando.ExecuteReader();
                if (DbReader.Read())
                {
                    cilindroMetodo = new Cilindro();
                    cilindroMetodo.Id = Convert.ToString(DbReader.GetInt32(DbReader.GetOrdinal("ID_CILINDRO")));
                    cilindroMetodo.Nome = DbReader.GetString(DbReader.GetOrdinal("NOME"));
                    cilindroMetodo.Tipo = DbReader.GetString(DbReader.GetOrdinal("TIPO"));
                    cilindroMetodo.Marca = DbReader.GetString(DbReader.GetOrdinal("MARCA"));
                    cilindroMetodo.Valor = DbReader.GetString(DbReader.GetOrdinal("VALOR"));
                    //cilindroMetodo.Imagem = DbReader.GetString(DbReader.GetOrdinal("IMAGEM"));
                }

                DbReader.Close();
                comando.Dispose();
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message + " Erro ao consultar o Cilindro.");
            }

            finally
            {
                this.fecharConexao();
            }
            return cilindroMetodo;
        }

        public List<Cilindro> listar()
        {
            List<Cilindro> listaCilindro = new List<Cilindro>();

            try
            {
                this.abrirConexao();
                SqlCommand comando = new SqlCommand("SELECT ID_CILINDRO, NOME, TIPO, MARCA, VALOR FROM CILINDRO", this.conexao);
                SqlDataReader DbReader = comando.ExecuteReader();
                while (DbReader.Read())
                {
                    Cilindro clindroMetodo = new Cilindro();
                    clindroMetodo.Id = Convert.ToString(DbReader.GetInt32(DbReader.GetOrdinal("ID_CILINDRO")));
                    clindroMetodo.Nome = DbReader.GetString(DbReader.GetOrdinal("NOME"));
                    clindroMetodo.Tipo = DbReader.GetString(DbReader.GetOrdinal("TIPO"));
                    clindroMetodo.Marca = DbReader.GetString(DbReader.GetOrdinal("MARCA"));
                    clindroMetodo.Valor = DbReader.GetString(DbReader.GetOrdinal("VALOR"));
                    //clindroMetodo.Imagem = DbReader.GetString(DbReader.GetOrdinal("IMAGEM"));

                    listaCilindro.Add(clindroMetodo);
                }

                DbReader.Close();
                comando.Dispose();
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message + " Erro ao listar o Cilindro.");
            }

            finally
            {
                this.fecharConexao();
            }
            return listaCilindro;
        }
    }
}
